/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package questao06;

/**
 *
 * @author SDKW
 */
enum Golpe {
    Nenhum, Chute, Murro
}
public class JogoDeLuta {
    private final int incremento = 15;
    private final int metaParaEspecial = 250;
    private int scoreAuxiliar = 0;
    private boolean especialAtivo = false;
    private int score = 0;
    private Golpe ultimoGolpe = Golpe.Nenhum;
    
    public void chutar() {
        String logInformativo = "\tChutando...";        
        if (especialAtivo && ultimoGolpe == Golpe.Murro) {
            scoreAuxiliar = score = 0;
            especialAtivo = false;
            logInformativo += "Aplicando golpe especial.";
        } else {   
            scoreAuxiliar = ultimoGolpe == Golpe.Chute ? scoreAuxiliar + incremento : incremento;
            score += scoreAuxiliar;
            verificarEspecial();
            ultimoGolpe = Golpe.Chute;
            logInformativo += "Score: " + score;
        }
        if (especialAtivo) {
            logInformativo += "Especial atingido. "; 
        }
        System.out.println(logInformativo);
    }
    
    public void esmurrar() {
        String logInformativo = "\tEsmurrando...";
        if (especialAtivo && ultimoGolpe == Golpe.Murro) {
            scoreAuxiliar = score = 0;
            especialAtivo = false;
            logInformativo += "Aplicando golpe especial.";
        } else {         
            scoreAuxiliar = ultimoGolpe == Golpe.Murro ? scoreAuxiliar + incremento : incremento;
            score += scoreAuxiliar;
            verificarEspecial();
            if (especialAtivo) {
                logInformativo += "Especial atingido. "; 
            }
            ultimoGolpe = Golpe.Murro;
            logInformativo += "Score: " + score;   
        }
        System.out.println(logInformativo);
    }
    
    private void verificarEspecial() {
        if (score >= metaParaEspecial) {
            score = metaParaEspecial;
            especialAtivo = true;
        }
    }
}
